
using Admin2024.Domain.DomainService.Tool;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace Admin2024.Domain.Entity.System
{
    public class AppUser:BaseEntity
    {
    private List<AppRole> _appRoles = new List<AppRole>();


     public AppUser() { }
    public AppUser(Guid id) : base(id)
    {

    }
    public AppUser(Guid id, string username, string password)
    {
        Id = id;
        Username = username;
        Password = password;
    }    
    // 用户名
    public string Username { get; set; } = null!;

    // 密码
    public string Password { get; set; } = null!;

    // 随机加密字符串
    public string Salt { get; set; } = null!;// 盐

    // 昵称
    public string? Nickname { get; set; } 

    // 头像
    public string? Avatar { get; set; } 

    // 手机号
    public string? Telephone { get; set; }
        public string? Email { get; set; }
    // 微信号
    public string? Weixin { get; set; } 

    // QQ号
    public string? QQ { get; set; }

        public void Haser()
        {
            Password = PasswordHasher.HashPassword(Password, Salt);
        }


        // 检查字段格式
        public static bool CheckReg(AppUser user)
        {
            // 假设我们有一些正则表达式来检查格式
            var usernameRegex = new Regex(@"^[a-zA-Z0-9_]{3,50}$");
            var passwordRegex = new Regex(@"^.{6,100}$"); // 简单的密码长度检查
            var telephoneRegex = new Regex(@"^\d{11}$"); // 简单地假设电话号码总是11位数字
            var weixinRegex = new Regex(@"^[\w\-]{3,}$"); // 微信号的简单格式检查
            var qqRegex = new Regex(@"^\d{5,11}$"); // QQ号的简单格式检查

            // 检查每个字段的格式
            bool isValid = true;

            if (!usernameRegex.IsMatch(user.Username))
            {
                Console.WriteLine("用户名格式不正确");
                isValid = false;
            }

            if (!passwordRegex.IsMatch(user.Password))
            {
                Console.WriteLine("密码格式不正确");
                isValid = false;
            }

            if (!string.IsNullOrEmpty(user.Telephone) && !telephoneRegex.IsMatch(user.Telephone))
            {
                Console.WriteLine("电话号码格式不正确");
                isValid = false;
            }

            if (!string.IsNullOrEmpty(user.Weixin) && !weixinRegex.IsMatch(user.Weixin))
            {
                Console.WriteLine("微信号格式不正确");
                isValid = false;
            }

            if (!string.IsNullOrEmpty(user.QQ) && !qqRegex.IsMatch(user.QQ))
            {
                Console.WriteLine("QQ号格式不正确");
                isValid = false;
            }

            // 返回检查结果
            return isValid;
        }


        //分界线=
    }
}